DNS 解析优化

您所在的位置:网站首页 dns 负载均衡 DNS 解析优化

DNS 解析优化

2023-11-12 13:15| 来源: 网络整理| 查看: 265

前言

近期有位老朋友遇上了 DNS 解析的问题前来求助,他的项目出现了域名访问慢的问题,那么这次就顺便来深入的研究一下 DNS 的解析原理吧!!!

众所周知 DNS 解析是访问页面时的必经之路,将域名解析成对应的IP地址,与服务器建立连接,DNS 解析的速度和稳定性对网站的性能和用户体验都有着重要的影响

什么是 DNS

DNS全称为Domain Name System,即域名系统,是域名和IP地址相互映射的一个分布式数据库。

DNS 能够将域名映射转换成对应的IP地址。

在 DNS 系统中,各级域名服务器会向其父级域名服务器查询所需的 IP 地址信息,以实现域名和 IP 地址之间的映射。同时通过 DNS预解析优化、DNS 负载均衡、减少 DNS 请求、配置CDN域名加速等方式能够缩短浏览器访问DNS的时间,提高访问效率。

DNS 层级

DNS 的划分层级分为如下几层:

根域名服务器:. 是 DNS 的最高层,全球只有13个根域名服务器,它们负责全球域名系统的最高层管理。 顶级域名服务器:.edu、.com、.gov、.org、.mil 等 是根域名的下一层。每个顶级域名都有自己的域名服务器,例如.com 域名的域名服务器是 a.gtld-servers.net、b.gtld-servers.net 等。 第二层域名:顶级域名下的子域名。例如百度的域名是 www.baidu.com,baidu 是第二层域名。 子域名:一个域名的子集合。例如 blog.baidu.com,blog 是百度的一个子域名。

在 DNS 系统中,各级域名服务器会向其父级域名服务器查询所需的 IP 地址信息,以实现域名和 IP 地址之间的映射。这样就可以让用户通过域名来访问网站,而不需要记住复杂的 IP 地址了。

那么 DNS 是如何进行解析的呢,一起来了解一下 吧!

DNS 解析流程

浏览器访问域名时 DNS 解析方案是 先查缓存,再递归解析:浏览器缓存-系统缓存-路由器缓存-ISP

搜索浏览器自带的DNS缓存 查询操作系统缓存和 /etc/hosts本地文件 查询路由器中的DNS缓存 向根服务器发送递归查找,从 根域名服务器 > 顶级域名服务器 > 权威域名(主域名)服务器 > 本地域名服务器器 依次递归查找 解析得到的结果保存到缓存,以备下一次使用

造成 DNS 解析慢的原因 DNS服务器、网络问题

当DNS服务器出现问题或者网络连接不稳定时,会导致域名解析变慢。可以尝试更换DNS服务器,或者检查网络连接是否正常

DNS缓存问题

如果计算机或者浏览器中的DNS缓存过期或者损坏,也会导致域名解析变慢。可以尝试清除DNS缓存,让计算机重新获取最新的DNS 信息,更新DNS地址池信息。

域名解析次数过多

如果程序中存在大量的域名解析请求,也会导致域名解析变慢。可以尝试减少域名解析请求次数,或者使用缓存技术来避免重复解析。

总之,要优化解决DNS域名解析慢的问题,需要分析具体原因,然后采取相应的措施进行优化,可以尝试使用DNS预解析、使用CDN加速、优化网络连接等方法来优化加载速度。

DNS 优化 DNS 预解析:(亲测有效)

在用户点击链接之前预先解析链接中包含的域名,对网页中的域名进行解析缓存,因此在单击当前网页中的连接时就无需进行 DNS 的解析,从而加快页面的加载速度提高用户体验。

设置 DNS 预解析:

用meta信息来告知浏览器, 当前页面要做DNS预解析

2. 使用HTML的DNS预解析标签:在页面 header 中使用 link 标签来强制对 DNS 预解析

DNS Prefetch 应该尽量的放在网页的前面,推荐放在后面

这样浏览器在加载页面时就会预先解析 example.com的DNS信息,从而加快后续页面的加载速度。

注意:配置 dns-prefetch 需慎用,DNS预解析虽然可以加速网站的加载速度,但也会增加网络流量和服务器负担,多页面重复DNS预解析会增加重复DNS查询次数。

DNS 缓存优化

DNS 缓存是指前一次查询获取到的 DNS 记录会被保存在本地 DNS 缓存中,下一次查询相同记录时,可以直接从缓存中获取信息,而不必再次向 DNS 服务器发起查询。

优化 DNS 缓存可以降低 DNS 解析的延迟,提高网站的访问速度,同时也可以减轻 DNS 服务器的负担。

可以通过增加本地 DNS 缓存的大小、优化本地 DNS 缓存的清理策略等方式来优化 DNS 缓存。

合理配置 TTL 值

TTL(Time-To-Live)是 DNS 解析结果的缓存时间,经常作为本地 DNS 缓存清理的优化策略

减少 DNS 解析时间的一个有效方式就是合理配置 TTL 值。当 DNS 记录的 TTL 值设置得过大时,DNS 解析的结果会在本地缓存较长时间,导致在 DNS 服务器上更新 DNS 记录信息时,客户端本地 DNS 缓存中的记录仍然存在,从而会延迟DNS解析时间。

因此,需要根据网站的特点设置合理的TTL值。

DNS 负载均衡

DNS负载均衡技术是指在多台服务器分发请求时,将同一个域名映射到多个IP地址,当应答DNS查询时, DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,使得客户端访问不同的服务器,从而达到负载均衡的目的,减少服务器压力。

CDN域名加速

CDN(Content Delivery Network,内容分发网络)构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。

CDN服务缩短了用户查看内容的访问延迟,将静态资源通过 CDN 进行加速,减少IP地址切换带来的影响,解决了网络带宽小、用户访问量大、网点分布不均等问题,提升访问速度。

CDN加速原理

当用户访问使用CDN服务的网站时,本地DNS服务器通过CNAME方式将最终域名请求重定向到CDN服务。服务器将最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容。

使用CDN后的HTTP请求处理流程如下:

用户在浏览器输入要访问的网站域名,向本地DNS发起域名解析请求。 域名解析的请求被发往网站授权DNS服务器。 网站DNS服务器解析发现域名已经CNAME到了www.example.com.c.cdnhwc1.com。 请求被指向CDN服务。 CDN对域名进行智能解析,将响应速度最快的CDN节点IP地址返回给本地DNS。 用户获取响应速度最快的CDN节点IP地址。 浏览器在得到速度最快节点的IP地址以后,向CDN节点发出访问请求。 CDN节点将用户所需资源返回给用户。

CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低,且大部分请求在CDN边缘节点完成,CDN起到分流作用,减轻了源服务器的压力。

减少 DNS 请求

用户输入 URL 以后,浏览器首先要查询域名(example.com)对应服务器的 IP 地址,这个操作一般需要耗费 20-120 毫秒时间。DNS 查询完成之前,浏览器无法从服务器下载任何数据。

基于性能考虑,ISP、局域网、操作系统、浏览器都会有相应的 DNS 缓存机制。而 Web 前端 80% 的响应时间花在图片、样式、脚本等资源下载上,最直接的方式是减少 DNS 的请求数量和大小

合并 JS、CSS 文件

将多个小文件合并成一个文件,减少 DNS 的请求次数,从而降低IP地址切换的影响。

压缩和优化JS和CSS文件

使用 Gzip 压缩,将JS、CSS等文件进行压缩和优化处理,减小文件大小,从而加快资源请求速度。

域名的发散 & 收敛

域名的发散和收敛是网络优化中常用的两种策略。

域名发散

域名的发散指的是将资源、内容分散到多个域名上,每个域名只承担部分内容的加载,这样可以减轻单个域名的访问负荷,以提供最大并行数,提高网站的访问速度和用户体验。

发散域名还可以避免域名污染和屏蔽等风险,提高网站的可靠性和稳定性。

域名收敛

域名的收敛则是将多个网站的内容收敛到一个域名上,整合网站的资源和管理,减少重复的内容和冗余,提高网站的效率和可维护性。

🎈 总结

最终这位朋友通过设置 DNS 预解析的方式解决了域名解析慢的问题。在此前我也只是知道理论并没有在项目中实践过,所以通过他的这次问题也让我多了一份探究的念头,对 DNS 的解析进行更深入的了解,相互提高。

经过查阅整理相关知识,以上是一些常用的 DNS 优化方式,但具体优化措施还需要根据实际情况不断调整,以达到最佳的优化效果。

😀 感谢各位的阅读,希望本文对你们有所帮助!!!

参考 【DNS解析优化的主要方法】developer.aliyun.com/article/792… 【CDN的加速原理是什么】www.huaweicloud.com/zhishi/cdn0… 【当然还有chatGPT 啦 ❤❤❤】


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3